package org.litu.app.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.apache.commons.lang3.StringUtils;
import org.litu.app.dao.SysSystemVersionMapper;
import org.litu.app.entity.system.SysSystemVersion;
import org.litu.app.service.ISysSystemVersionService;
import org.litu.base.service.impl.BaseServiceImpl;
import org.litu.core.login.UserInfo;
import org.springframework.stereotype.Service;

import java.util.Map;

/**
 * <p>
 * 系统版本管理表 服务实现类
 * </p>
 *
 * @author ltgk
 * @since 2019-07-24
 */
@Service
public class SysSystemVersionServiceImpl extends BaseServiceImpl<SysSystemVersionMapper, SysSystemVersion> implements ISysSystemVersionService {

    @Override
    public void beforePage(UserInfo user, SysSystemVersion entity, String keyword, IPage<SysSystemVersion> page, Map<String, String> params, LambdaQueryWrapper<SysSystemVersion> query) {
        if (StringUtils.isNotBlank(entity.getSystemCode())) {
            query.eq(SysSystemVersion::getSystemCode, entity.getSystemCode());
        }
        if (StringUtils.isNotBlank(entity.getPlatType())) {
            query.eq(SysSystemVersion::getPlatType, entity.getPlatType());
        }
        query.orderByDesc(SysSystemVersion::getUpdateDate);
    }

    /**
     * 返回最新版本的系统
     *
     * @return
     */
    @Override
    public SysSystemVersion getNewSystemVersion(String systemCode, String platType) {
        // 更新时间降序
        LambdaQueryWrapper<SysSystemVersion> query = Wrappers.lambdaQuery();
        query.eq(SysSystemVersion::getSystemCode, systemCode);
        query.eq(SysSystemVersion::getPlatType, platType);
        query.orderByDesc(SysSystemVersion::getUpdateDate);
        query.last(" LIMIT 1");

        SysSystemVersion version = getOne(query);
        return version;
    }
}
